package com.moli.utils;

import com.moli.domain.entity.Menu;
import com.moli.domain.vo.MenuTreeVo;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * @Author： XC
 * @Date： 2023-06-09 09:53
 * @Description： 系统工具类
 */

public class SystemConverter {

	private SystemConverter() {
	}


	public static List<MenuTreeVo> buildMenuSelectTree(List<Menu> menus) {
		List<MenuTreeVo> MenuTreeVos = menus.stream()
				.map(m -> new MenuTreeVo(m.getId(), m.getMenuName(), m.getParentId(), null))
				.collect(Collectors.toList());
		List<MenuTreeVo> options = MenuTreeVos.stream()
				.filter(o -> o.getParentId().equals(0L))
				.map(o -> o.setChildren(getChildList(MenuTreeVos, o)))
				.collect(Collectors.toList());


		return options;
	}


	/**
	 * 得到子节点列表
	 */
	private static List<MenuTreeVo> getChildList(List<MenuTreeVo> list, MenuTreeVo option) {
		List<MenuTreeVo> options = list.stream()
				.filter(o -> Objects.equals(o.getParentId(), option.getId()))
				.map(o -> o.setChildren(getChildList(list, o)))
				.collect(Collectors.toList());
		return options;

	}
}
